import com.dimao.certificate_build_service.Util.Log.Level
import com.dimao.certificate_build_service.Util.Log.Log
import com.dimao.certificate_build_service.Util.Log.SaveMode
import com.dimao.certificate_build_service.pdf.PDFConfig
import com.dimao.certificate_build_service.pdf.ValueFactory
import com.dimao.certificate_build_service.pdf.kotiln.PDFBuildQueue
import com.dimao.certificate_build_service.pdf.kotiln.PDFBuilder
import com.dimao.certificate_build_service.pdf.kotiln.PDFMerge
import io.vertx.core.AbstractVerticle
import io.vertx.core.Future
import io.vertx.core.Vertx
import io.vertx.core.json.JsonArray
import io.vertx.core.json.JsonObject
import io.vertx.kotlin.coroutines.CoroutineVerticle
import io.vertx.kotlin.coroutines.awaitResult

fun main(){
    val vertx = Vertx.vertx()
    Log.initLogger(vertx, SaveMode.NoSave, Level.trace)
    PDFBuildQueue.init("test", vertx, PDFConfig())
            .setHandler { asyncResult ->
                if(asyncResult.failed()) Log.error("error", asyncResult.cause())
                else vertx.deployVerticle(B())
            }
}

class C : CoroutineVerticle() {
    override suspend fun start() {
        val buffer = PDFMerge.merge(vertx, listOf(
                "${PDFBuilder.config.saveTemporaryPDFPath}/1/11.pdf",
                "${PDFBuilder.config.saveTemporaryPDFPath}/1/12.pdf",
                "${PDFBuilder.config.saveTemporaryPDFPath}/1/13.pdf"
        ))
        awaitResult<Void> { h->vertx.fileSystem().writeFile("1.pdf", buffer, h) }
        Log.info("succeeded")
    }
}

class B : AbstractVerticle() {
    override fun start() {
        vertx.eventBus().publish("test", JsonObject()
                .put("task_id", "1")
                .put("data", JsonObject()
                        .put("certificate_id", "11")
                        .put("pdf_type", "type_two")
                        .put("code", "11111")
                        .put("content", "我顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶的迭代的的的《的撒大撒大》撒大撒大撒大撒大撒大撒大撒的打发打发手动阀手动阀手动阀手动阀手动阀")
                        .put("number", "个人特别奖")
                        .put("date", "二零一九年十一月十九日")
                        .put("students", JsonArray()
                                .add("何松")
                                .add("纳兰")
                                .add("纳兰木搓")
                                .add("文涛")
                                .add("冲天香")
                                .add("可续")
                                .add("杀杀杀")
                                .add("层次")
                                .add("为什么")
                        )
                        .put("teachers", JsonArray()
                                .add("李国松")
                                .add("方没"))
                )
        )
        vertx.eventBus().publish("test", JsonObject()
                .put("task_id", "1")
                .put("data", JsonObject()
                        .put("certificate_id", "13")
                        .put("pdf_type", "type_one")
                        .put("code", "11111")
                        .put("content", "我顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶的迭代的的的《的撒大撒大》撒大撒大撒大撒大撒大撒大撒的")
                        .put("number", "个人特别奖")
                        .put("date", "二零一九年十一月十九日")
                        .put("students", JsonArray()
                                .add("何松")
                                .add("纳兰")
                                .add("纳兰木搓")
                                .add("文涛")
                                .add("冲天香")
                                .add("可续")
                                .add("杀杀杀")
                                .add("层次")
                                .add("为什么")
                        )
                )
        )
        vertx.eventBus().publish("test", JsonObject()
                .put("task_id", "1")
                .put("data", JsonObject()
                        .put("certificate_id", "12")
                        .put("pdf_type", "type_one")
                        .put("code", "11111")
                        .put("content", "我顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶的迭代的的的《的撒大撒大》撒大撒大撒大撒大撒大撒大撒的")
                        .put("number", "个人特别奖")
                        .put("date", "二零一九年十一月十九日")
                        .put("students", JsonArray()
                                .add("何松")
                                .add("纳兰")
                                .add("纳兰木搓")
                                .add("文涛")
                                .add("冲天香")
                                .add("可续")
                                .add("杀杀杀")
                                .add("层次")
                                .add("为什么")
                        )
                )
        )
//        vertx.eventBus().publish("test", JsonObject()
//                .put("task_id", "1")
//                .put("data", JsonObject()
//                        .put("certificate_id", "12")
//                        .put("pdf_type", "type_one")
//                        .put("code", "11111")
//                        .put("content", "我顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶的迭代的的的《的撒大撒大》撒大撒大撒大撒大撒大撒大撒的")
//                        .put("number", "一等奖")
//                        .put("date", "二零一九年十一月十九日")
//                        .put("students", JsonArray()
//                                .add("何松洋")
//                                .add("纳兰")
//                                .add("纳兰木搓")
//                        )
//                )
//        )
    }
}